home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Impresión / PrintThreePages / PrintThreePages.cs < prev    next >
Encoding:
Text File  |  2002-05-24  |  3.0 KB  |  87 lines

  1. //----------------------------------------------
  2. // PrintThreePages.cs ⌐ 2001 by Charles Petzold
  3. //----------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Drawing.Printing;
  7. using System.Windows.Forms;
  8.  
  9. class PrintThreePages: Form
  10. {
  11.      const int iNumberPages = 3;
  12.      int       iPageNumber;
  13.  
  14.      public static void Main()
  15.      {
  16.           Application.Run(new PrintThreePages());
  17.      }
  18.      public PrintThreePages()
  19.      {
  20.           Text = "Imprimir tres pßginas";
  21.  
  22.           Menu = new MainMenu();
  23.           Menu.MenuItems.Add("&Archivo");
  24.           Menu.MenuItems[0].MenuItems.Add("&Imprimir...", 
  25.                                    new EventHandler(MenuFilePrintOnClick));
  26.      }
  27.      void MenuFilePrintOnClick(object obj, EventArgs ea)
  28.      {
  29.                // Crear PrintDocument.
  30.  
  31.           PrintDocument prndoc = new PrintDocument();
  32.  
  33.                // Crear cuadro de dißlogo y establecer PrinterName property.
  34.  
  35.           PrinterSelectionDialog dlg = new PrinterSelectionDialog();
  36.           dlg.PrinterName = prndoc.PrinterSettings.PrinterName;
  37.  
  38.                // Mostrar el cuadro de dißlogo y salir si el resultado no es OK.
  39.  
  40.           if (dlg.ShowDialog() != DialogResult.OK)
  41.                return;
  42.  
  43.                // Establecer PrintDocument con la impresora seleccionada.
  44.  
  45.           prndoc.PrinterSettings.PrinterName = dlg.PrinterName;
  46.  
  47.                // Establecer la resoluci≤n de la impresora a borrador (draft).
  48.  
  49.           foreach (PrinterResolution prnres in 
  50.                                    prndoc.PrinterSettings.PrinterResolutions)
  51.           {
  52.                if (prnres.Kind == PrinterResolutionKind.Draft)
  53.                     prndoc.DefaultPageSettings.PrinterResolution = prnres;
  54.           }
  55.  
  56.                // Establecer el resto de propiedades de PrintDocument.
  57.  
  58.           prndoc.DocumentName = Text;
  59.           prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
  60.           prndoc.QueryPageSettings += new QueryPageSettingsEventHandler
  61.                                              (OnQueryPageSettings);
  62.                // Comenzar a imprimir.
  63.  
  64.           iPageNumber = 1;
  65.           prndoc.Print();
  66.      }
  67.      void OnQueryPageSettings(object obj, QueryPageSettingsEventArgs qpsea)
  68.      {
  69.           if (qpsea.PageSettings.PrinterSettings.LandscapeAngle != 0)
  70.                qpsea.PageSettings.Landscape ^= true;
  71.      }
  72.      void OnPrintPage(object obj, PrintPageEventArgs ppea)
  73.      {
  74.           Graphics grfx  = ppea.Graphics;
  75.           Font     font  = new Font("Times New Roman", 360);
  76.           string   str   = iPageNumber.ToString();
  77.           SizeF    sizef = grfx.MeasureString(str, font);
  78.  
  79.           grfx.DrawString(str, font, Brushes.Black, 
  80.                     (grfx.VisibleClipBounds.Width - sizef.Width) / 2,
  81.                     (grfx.VisibleClipBounds.Height - sizef.Height) / 2);
  82.  
  83.           ppea.HasMorePages = iPageNumber < iNumberPages;
  84.           iPageNumber += 1;
  85.      }
  86. }
  87.